package Couistot;
import java.io.File;

import java.util.Scanner;

import CouistotEnum.*;
public class AppliGerant {
	
	
	
	
	/* ALLOUTER TACHE */
	public static void allouerTache (Tache t, Serveur s){
		// faudra choisir la taches ici une fois qu'elles seront sérialisées, vu qu'il n'y aura, qu'un nombre prédéfini
		s.setTache(t);
		// enregistrer de nouveau le serveur, car on a mis à jour sa tâche
		Serialisable.sauvegarde(s);
	}
	/* FIXER REVENU */
	public static void fixerRevenu (Serveur s) {
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);
		System.out.println("Le revenu actuel de "+s.getPrenom()+" "+s.getNom()+" et de "+s.getRevenu()+"\n" );
		System.out.println("Quel montant souhaitez vous fixer pour le serveur "+s.getClass().getName()+" ?\n");
		float rev = sc.nextFloat();
		sc.nextLine();
		s.setRevenu(rev);
    Serialisable.sauvegarde(s);  
		System.out.println(s.getPrenom()+" "+s.getNom()+" nouveau revenu fixé "+ s.getRevenu());
		
	}
	/* CHECK ETAT COMMANDE */
	public static void checkCommande (Commande c) {
		// pas de ToString on s'interesse aux informations nécéssaires uniquement énoncées clairement
		System.out.println("id Commande : "+c.getId()+"\n"+"Statut : "+c.getStatut()+"\n"+"Délai : "+c.getDelai()+"\n");
		                   
	}
	/* AJOUTER TABLE */
	public static void ajouterTable() {
		Scanner sc = new Scanner(System.in);
		System.out.println("quel est le numéro de la nouvelle table ?\n ");
		int num = sc.nextInt();
		sc.nextLine();
		System.out.println("Quel est la forme de la table ? \n CIRCULAIRE ou RECTANGULAIRE ?\n");
		String frm = sc.nextLine();
		FormeTables forme = FormeTables.valueOf(FormeTables.class, frm); // STRING associé à l'enum
		System.out.println("Quel est l'emplacement de la table ? \n FENETRE, STANDARD ou TERRASSE ?\n ");
		String emp =sc.nextLine();
		EmplacementsResto emplac = EmplacementsResto.valueOf(EmplacementsResto.class, emp);
		System.out.println("Quel est le nombre de place que peut supporter la table ?\n");
		int plc=sc.nextInt();
		sc.nextLine();
		new TableResto(num,emplac,forme,plc,0,false);
		System.out.println("Table enregistree \n");
		sc.close();
	}
	/* SUPPRIMER TABLE (void) + (int numeroTable) */
	public static void supprimerTable() {    //try catch à ajouter
		System.out.println("quel est le numéro de la table a supprimer ?\n ");
		Scanner sc = new Scanner(System.in);
		int num =sc.nextInt();
        sc.nextLine();
        File MyFile = new File("Couistot.TableResto"+"/"+"Table"+String.valueOf(num)); 
        MyFile.delete();
		sc.close();
		System.out.println("Table supprimee");
	}
	public static void supprimerTable(int numTable) {
		 File MyFile = new File("Couistot.TableResto"+"/"+"Table"+String.valueOf(numTable)); 
	     MyFile.delete();	
	}
	
		/* MODIFIER TABLE (fusion incluse) */
	public static void modifierTable() {
		// CHOIX table
		System.out.println("quel est le numéro de la table a modifier/separer/fusionner ?\n ");
		Scanner sc = new Scanner(System.in);
		int choix;
		int num =sc.nextInt();
        sc.nextLine();
        TableResto tab=new TableResto(num, null,null,0,0,false);
        tab=(TableResto) Serialisable.charger(tab); 
       
        // MENU modification
        System.out.println("quel element souhaitez-vous modifier\n ");
        System.out.println("1 - emplacement de la table");
        System.out.println("2 - places disponibles");
        System.out.println("3 - Fusionner tables");
        System.out.println("4 - Separer tables fusionnees"); 
        System.out.println("5 - Quitter");
        
        choix = sc.nextInt();
        sc.nextLine();
        switch (choix) {
        
        case 1 : 	
        	System.out.println("Quel est l'emplacement de la table ? \n FENETRE, STANDARD ou TERRASSE ?\n ");
    		String emp =sc.nextLine();
    		EmplacementsResto emplac = EmplacementsResto.valueOf(EmplacementsResto.class, emp);
    		tab.setEmplacement(emplac);
    		Serialisable.sauvegarde(tab);
    		break;
        case 2 :
        	System.out.println("Quel est le nombre de place que peut supporter la table actuellement ?\n");
    		int plc=sc.nextInt();
    		sc.nextLine();
    		tab.setNombrePlaces(plc);
    		Serialisable.sauvegarde(tab);
    		break;
        case 3 :	
        	System.out.println("Vous avez choisis de fusionner la table"+tab.getNumeroTable()+"\n");
        	System.out.println("choisissez l'autre table à fusionner \n");
        	int fusion=sc.nextInt();
        	sc.nextLine();
        	TableResto tab3=new TableResto(fusion, null,null,0,0,false);
            tab3=(TableResto) Serialisable.charger(tab3); 
        	System.out.println("Quel est le nouvel emplacement de la table \n");
        	String empf =sc.nextLine();
    		EmplacementsResto empfusion = EmplacementsResto.valueOf(EmplacementsResto.class, empf);
    		int placefusion=tab.getNombrePlaces()+tab3.getNombrePlaces()-2; // il y a deux places en moins du coté où l'on a fusionné
    		System.out.println("la table fusionnee aura"+placefusion+"places\n");
    		tab.setReservee(true);
    		Serialisable.sauvegarde(tab);
    		tab3.setReservee(true);
    		Serialisable.sauvegarde(tab3);
    		
    		//determination forme table fusionne soit [] soit []()
    		if(String.valueOf(tab.getForme())=="RECTANGULAIRE" && String.valueOf(tab3.getForme())=="RECTANGULAIRE" ){  
    		String formef="RECTANGULAIRE";
    		FormeTables forme = FormeTables.valueOf(FormeTables.class, formef);
    		TableResto tabfusion = new TableResto(tab.getNumeroTable()+tab3.getNumeroTable(),empfusion,forme,placefusion,0,false);
    		Serialisable.sauvegarde(tabfusion); // on  sauvegarde la table : numtable fusionnee : l'addition des numeros des tables la composant
    		}
    		else {String formef="FUSIONNEE";
    		FormeTables forme = FormeTables.valueOf(FormeTables.class, formef);
    		TableResto tabfusion = new TableResto(tab.getNumeroTable()+tab3.getNumeroTable(),empfusion,forme,placefusion,0,false);
    		Serialisable.sauvegarde(tabfusion);
    		}
    		break;
    		
    		
        	
        case 4 :	
        	int f=tab.getNumeroTable();
        	System.out.println("Quel est le numero de la deuxieme table fusionnée ?\n");
        	int f2=sc.nextInt();
        	sc.nextLine();
        	supprimerTable(f+f2); //supprimer table fusion
        	tab.setReservee(false); //tab (chargée au debut) est forcement une des deux tables fusionnee 
        	Serialisable.sauvegarde(tab);
        	
        	TableResto tab2=new TableResto(f2, null,null,0,0,false);
            tab2=(TableResto) Serialisable.charger(tab2); 
            tab2.setReservee(false);
            Serialisable.sauvegarde(tab2);
        	
        	break;
        case 5 :	
        	System.exit(0);/* exit */
        	break;
    	default :	
    		System.out.println("Merci de faire un choix valide\n");
    		modifierTable();
        break;
        
        
        
	}
 sc.close();

}
/* GERER RESERVATION */	
/* MODIFIER MENU */	
/* AJOUTER PRODUIT */	
/* SUPPRIMER PRODUIT */	
/* MODIFIER PRODUIT */	
}
